/*
 * ﻿Copyright (C) 2009-2013 NewMain Softech
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
 * either express or implied. See the License for the specific language
 * governing permissions and limitations under the License.
 */
package com.newmainsoftech.gwetons.client.style.css;

/**
 * Defines javascript property names in style change data structure being read by 
 * {@link CssStyleChangerBySelector} from hosting web page.
 * 
 * @author Arata Y.
 */
public enum JsDataPropertyIdentification {
	// For CssStyleChangerDataSet class
	/** For {@link CssStyleChangerDataSet} class */
	CscbsDataSet( "cscbsDataSet", null),
	/** For {@link CssStyleChangerDataSet} class */
	StyleChangerDataArray( "styleChangerDataArray", null),
	
	// For CssStyleChangerDataUnit class
	/** For {@link CssStyleChangerDataUnit} class */
	Repeatable( "repeatable", new Class<?>[]{ Boolean.class}), 
	/** For {@link CssStyleChangerDataUnit} class */
	Sequence( "sequence", new Class<?>[]{ Boolean.class}),
	/** For {@link CssStyleChangerDataUnit} class */
	SelectorUnitArray ( "selectorUnitArray", null),
	
	// For DataUnitByStyleSelector class
	/** For {@link DataUnitByStyleSelector} class */
	Selector( "selector", new Class<?>[]{ String.class}), 
	/** For {@link DataUnitByStyleSelector} class */
	Style( "style", new Class<?>[]{ String.class}), 
	/** For {@link DataUnitByStyleSelector} class */
	IsNumericColor( "isNumericColor", new Class<?>[]{ Boolean.class}), 
	/** For {@link DataUnitByStyleSelector} class */
	InitValueStrInitializationOn( "initValueStrInitializationOn", new Class<?>[]{ Boolean.class}), 
	/** For {@link DataUnitByStyleSelector} class */
	InitValue( "initValue", new Class<?>[]{ String.class, Integer.class}), 
	/** For {@link DataUnitByStyleSelector} class */
	NumericInitValueOn( "numericInitValueOn", new Class<?>[]{ Boolean.class}), 
	/** For {@link DataUnitByStyleSelector} class */
	EndValueStrInitializationOn( "endValueStrInitializationOn", new Class<?>[]{ Boolean.class}), 
	/** For {@link DataUnitByStyleSelector} class */
	EndValue( "endValue", new Class<?>[]{ String.class, Integer.class}), 
	/** For {@link DataUnitByStyleSelector} class */
	NumericEndValueOn( "numericEndValueOn", new Class<?>[]{ Boolean.class}),  
	/** For {@link DataUnitByStyleSelector} class */
	ValueUnit( "valueUnit", new Class<?>[]{ String.class}), 	// http://w3schools.com/cssref/css_units.asp 
	/** For {@link DataUnitByStyleSelector} class */
	ValuePrefix( "valuePrefix", new Class<?>[]{ String.class}), 
	/** For {@link DataUnitByStyleSelector} class */
	ValueSuffix( "valueSuffix", new Class<?>[]{ String.class}), 
	/** For {@link DataUnitByStyleSelector} class */
	Period( "period", new Class<?>[]{ Integer.class}), 
	/** For {@link DataUnitByStyleSelector} class */
	Interval( "interval", new Class<?>[]{ Integer.class}), 
	/** For {@link DataUnitByStyleSelector} class */
	Reversible( "reversible", new Class<?>[]{ Boolean.class}); 

	
	private String jsPropertyName; 
		public String getJsPropertyName() {
			return jsPropertyName;
		}
	private Class<?>[] types;
		public Class<?>[] getTypes() {
			return types;
		}
	private JsDataPropertyIdentification( String jsPropertyName, Class<?>[] types) {
		this.jsPropertyName = jsPropertyName;
		this.types = types;
	}
}
